package com.example.tool.util;

import android.Manifest;
import android.content.Context;

import com.example.tool.MyApplication;
import com.example.tool.listener.PermissionListener;
import com.yanzhenjie.permission.AndPermission;

/**
 * created by liangkun on ${DATA}
 * Describe:权限申请工具类
 */

public class PermissionUtil {

    //
    public static String[] permissions = new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            //允许应用程序通过WiFi或移动基站获取粗略的位置信息
//            Manifest.permission.ACCESS_COARSE_LOCATION,
//            //允许应用程序访问额外的位置提供者命令
//            Manifest.permission.ACCESS_FINE_LOCATION,
//            //允许应用程序读取电话状态
//            Manifest.permission.READ_PHONE_STATE,
//            //允许应用程序读取联系人通讯录信息
//            Manifest.permission.READ_CONTACTS,
//            //允许应用程序写入联系人，但不可读取
//            Manifest.permission.WRITE_CONTACTS,
//            //允许应用程序访问摄像头
//            Manifest.permission.CAMERA
    };

    /**
     * 获取权限数据
     *
     * @param permissionListener 权限监听
     */
    public static void requestPermission(PermissionListener permissionListener) {
        AndPermission.with(MyApplication.getContext())
                .permission(PermissionUtil.permissions)
                // 准备方法，和 okhttp 的拦截器一样，在请求权限之前先运行改方法，已经拥有权限不会触发该方法
                .rationale((context, permissions, executor) -> {
                    // 此处可以选择显示提示弹窗
                    executor.execute();
                    for (int i = 0; i < permissions.size(); i++) {

                    }
                })
                // 用户给权限了
                .onGranted(permissions ->
                        //权限申请完开启所有任务
                        permissionListener.onGranted()
                )
                // 用户拒绝权限，包括不再显示权限弹窗也在此列
                .onDenied(permissions -> {
                    permissionListener.onDenied(permissions);

                }).start();
    }


}
